| r18 | ||
|---|---|---|
| r1 (새 문서) | 1 | [목차] |
| 2 | == 개요 == | |
| 3 | 시스템 엔지니어링 1차 과제 중 Linux Script 작성 실습과 관련된 문서이다. | |
| 4 | ||
| 5 | == 제 0과제 == | |
| 6 | scp 명령어 이용해 과제 수행에 필요한 파일들을 받아오는 과제이다. | |
| 7 | scp 사용법은 아래와 같다. | |
| r9 | 8 | [br] |
| r1 (새 문서) | 9 | ># scp 원격ID@원격서버IP:파일위치 받는위치 |
| 10 | >Ex) scp root@172.16.48.201:"/home/test/{test1[20250109].txt,test2.sh,test[3].log,testfile,}" /home/test_user | |
| 11 | 위 예시 명령어 확인 시 파일을 한번에 받아오기 위해 중괄호를 추가했고 파일명 중 대괄호가 포함되어 있어 쌍따옴표를 넣어줬다. | |
| 12 | ||
| r12 | 13 | ---- |
| 14 | 사용 명령어 및 함수 : scp | |
| 15 | ||
| r1 (새 문서) | 16 | == 제 1과제 == |
| 17 | 2개의 파일 리스트를 비교해 같은 내용이 있는 라인을 출력하는 과제이다. | |
| r14 | 18 | diff 명령어를 사용해 중복된 라인을 출력 후 파일에 넣도록 스크립트를 작성했다. |
| r9 | 19 | [br] |
| r1 (새 문서) | 20 | > diff "$FILE1" "$FILE2" | grep '^<' | sed 's/^< //' >> "$OUTPUT_FILE" |
| r9 | 21 | 명령어 확인 시 스크립트 파일에서 특수기호 "^<" 사용을 위해 따옴표를 넣어줬다. |
| r1 (새 문서) | 22 | |
| r10 | 23 | ---- |
| r11 | 24 | 사용 명령어 및 함수 : grep, diff, sed |
| 25 | ||
| r14 | 26 | ===# 제 1과제 출력 결과 #=== |
| r15 | 27 | 아래 내용은 두 파일의 같은 컨텐츠 리스트를 출력한 결과입니다. |
| r14 | 28 | {{{H0102023FOD0308030.mpg |
| 29 | H0602024FOD0823006.mpg | |
| 30 | H0602024FOD0823007.mpg | |
| 31 | H0602024FOD0823008.mpg | |
| 32 | H0602024FOD0823009.mpg | |
| 33 | H0602024FOD0823010.mpg | |
| 34 | H0602024FOD0823011.mpg | |
| 35 | H0602024FOD0823012.mpg | |
| 36 | H0602024FOD0823013.mpg | |
| 37 | H0602024FOD0823014.mpg | |
| 38 | H0602024FOD0823015.mpg | |
| 39 | H0602024FOD0823016.mpg | |
| 40 | H0602024FOD0823017.mpg | |
| 41 | HCBCASD201229.mpg | |
| 42 | HCBFOHD210120.mpg | |
| 43 | HCXNFHD200319.mpg | |
| 44 | HCYLVHD200529.mpg | |
| 45 | M0026360.mpg | |
| 46 | M0026361.mpg | |
| 47 | M0026362.mpg | |
| 48 | M0026363.mpg | |
| 49 | M0026364.mpg | |
| 50 | M0026365.mpg | |
| 51 | M5245079.mpg | |
| 52 | M5245086.mpg | |
| 53 | M5245087.mpg | |
| 54 | M5245089.mpg | |
| 55 | M5245090.mpg | |
| 56 | M5245094.mpg}}} | |
| 57 | ||
| r1 (새 문서) | 58 | == 제 2과제 == |
| 59 | 대용량 파일을 비교해 공통으로 존재 하는것과 하지 않는 라인을 각각 다른 파일에 저장하는 과제이다. | |
| r3 | 60 | diff 명령어를 사용해 각각 다른 파일에 저장하도록 스크립트를 작성했다. |
| r9 | 61 | [br] |
| r1 (새 문서) | 62 | > diff "$FILE1" "$FILE2" | grep '^>' | sed 's/^> //' | awk '{print $1}' | grep -v 'filename' >> "$EXIST_FILE" |
| 63 | > diff "$FILE1" "$FILE2" | grep '^<' | sed 's/^< //' | awk -F '[,\t ]+' '{print $1}' >> "$NOT_EXIST_FILE" | |
| 64 | 위 명령어 확인 시 제 1과제 명령어와[*1 diff "$FILE1" "$FILE2" | grep '^<' | sed 's/^< //' >> "$OUTPUT_FILE"] 비슷하지만, | |
| 65 | awk를 추가해 필요한 정보만 걸러서 저장하도록 했다. | |
| 66 | 중복되는 컨텐츠 리스트와 중복되지 않는 리스트를 각각 저장하도록했다. | |
| r5 | 67 | |
| r11 | 68 | ---- |
| 69 | 사용 명령어 및 함수 : grep, sed, awk | |
| 70 | ||
| r14 | 71 | ===# 제 2과제 출력 결과 #=== |
| r15 | 72 | 아래 내용은 대용량 파일 중 비교파일에 존재하는 리스트를 출력한 결과입니다. |
| r14 | 73 | {{{## 공통으로 존재하는 리스트 출력 결과 ## |
| 74 | M5292473.mpg | |
| 75 | M5268158.mpg | |
| 76 | M5293857.mpg | |
| 77 | M5253970.mpg | |
| 78 | M5270540.mpg | |
| 79 | M5301053.mpg | |
| 80 | M5295048.mpg | |
| 81 | M5218576.mpg | |
| 82 | M5246713.mpg...}}} | |
| 83 | ||
| r15 | 84 | 아래 내용은 대용량 파일 중 비교파일에 존재하지 않는 리스트를 출력한 결과입니다. |
| r14 | 85 | {{{## 존재하지 않는 리스트 출력 결과 ## |
| 86 | historyheader:1731900096 | |
| 87 | .a.swp | |
| 88 | 1sec_110324.mpg | |
| 89 | 1sec_111227.mpg | |
| 90 | H0102022FOD0126015.mpg | |
| 91 | H0102022FOD0801017.mpg | |
| 92 | H0102022FOD0818015.mpg | |
| 93 | H0102022FOD1109013.mpg | |
| 94 | H0102022FOD1206008.mpg | |
| 95 | H0102022FOD1212004.mpg | |
| 96 | H0102022FOD1212007.mpg | |
| 97 | H0102022FOD1228018.mpg | |
| 98 | H0102023FOD0102017.mpg | |
| 99 | H0102023FOD0118010.mpg | |
| 100 | H0102023FOD0203014.mpg | |
| 101 | H0102023FOD0206017.mpg | |
| 102 | H0102023FOD0214006.mpg | |
| 103 | H0102023FOD0216014.mpg | |
| 104 | H0102023FOD0223005.mpg | |
| 105 | H0102023FOD0302030.mpg | |
| 106 | H0102023FOD0308015.mpg | |
| 107 | H0102023FOD0308030.mpg | |
| 108 | H0102023FOD0309006.mpg}}} | |
| 109 | ||
| r1 (새 문서) | 110 | == 제 3과제 == |
| 111 | 파일에 기록된 시간을 보기 편하게 변환해 별도 파일에 저장하는 과제이다. | |
| r9 | 112 | [br] |
| r3 | 113 | > cat "$FILE1" | grep -v history | awk -F ',' '{print $1 "," strftime("%Y-%m-%d %H:%M:%S", $2)}' >> $EXIST_FILE |
| r5 | 114 | strftime 함수를 이용해 파일 내 쉼표 2번째의 있는 텍스트(날짜)를 보기편하게(yyyy-mm-dd hh-mm-ss) 변환한다. |
| r1 (새 문서) | 115 | |
| 116 | || AS-IS || TO-BE || | |
| r6 | 117 | || 1721693207 || 2024-07-09 09:16:44 || |
| r1 (새 문서) | 118 | |
| r11 | 119 | ---- |
| 120 | 사용 명령어 및 함수 : grep, sed, strftime | |
| 121 | ||
| r14 | 122 | ===# 제 3과제 출력 결과 #=== |
| r15 | 123 | 아래 내용은 기존 파일입수 시간을 변환한 결과이다. |
| r14 | 124 | {{{1sec_110324.mpg,2016-12-08 16:44:16 |
| 125 | 1sec_111227.mpg,2020-06-05 14:38:59 | |
| 126 | H0102022FOD0126015.mpg,2023-09-21 19:39:20 | |
| 127 | H0102022FOD0801017.mpg,2023-10-20 13:40:52 | |
| 128 | H0102022FOD0818015.mpg,2023-12-27 17:45:50 | |
| 129 | H0102022FOD1109013.mpg,2023-09-19 11:21:30 | |
| 130 | H0102022FOD1206008.mpg,2023-11-14 17:07:44 | |
| 131 | H0102022FOD1212004.mpg,2023-09-25 17:47:41 | |
| 132 | H0102022FOD1212007.mpg,2023-10-24 13:06:43 | |
| 133 | H0102022FOD1228018.mpg,2023-09-19 16:16:59 | |
| 134 | H0102023FOD0102017.mpg,2023-09-20 09:59:54 | |
| 135 | H0102023FOD0118010.mpg,2023-08-07 16:36:09 | |
| 136 | H0102023FOD0203014.mpg,2023-08-29 16:25:55}}} | |
| 137 | ||
| r1 (새 문서) | 138 | == 제 4과제 == |
| r6 | 139 | 파일내 bitrate 값의 따라 각각 다른 파일의 저장하는 과제이다. |
| r11 | 140 | |
| 141 | {{{if (bitrate >= 6000000) { | |
| r16 | 142 | print out >> "HD.txt"; |
| 143 | hd_cnt++; hd_sum += bitrate; | |
| 144 | } }}}if문을 통해 6Mbps인 경우, 4~6M인 경우, 그 외 데이터를 각각 저장 할 수 있도록 작성했다. | |
| r11 | 145 | 다른 값들도 구문과 같이 각각 분리해 준다. |
| r9 | 146 | |
| r1 (새 문서) | 147 | {{{if (hd_cnt > 0) { |
| 148 | res = sprintf("total : %d, bitrate avg : %.0f", hd_cnt, hd_sum / hd_cnt); | |
| 149 | print res >> "HD.txt"; | |
| 150 | } }}}파일 마지막 줄에 나눈 파일 마다의 총 파일의 개수와 평균 bitrate를 계산한 값을 출력하도록했다. | |
| 151 | 다른 값들도 구문과 같이 총파일 개수와 평균 bitrate를 출력한다. | |
| r9 | 152 | |
| r7 | 153 | ---- |
| 154 | 사용 명령어 및 함수 : print , sprintf | |
| r11 | 155 | |
| 156 | ===# 제 4과제 출력 결과 #=== | |
| r4 | 157 | 아래 내용은 Bitrate가 6Mbps 이상인 컨텐츠 리스트 결과이다. |
| r14 | 158 | {{{## HD.txt ## |
| r15 | 159 | 1sec_110324.mpg,2016-12-08 16:44:16 |
| r14 | 160 | 1sec_111227.mpg,2020-06-05 14:38:59 |
| 161 | H0102022FOD0126015.mpg,2023-09-21 19:39:20 | |
| 162 | H0102022FOD0801017.mpg,2023-10-20 13:40:52 | |
| 163 | H0102022FOD0818015.mpg,2023-12-27 17:45:50 | |
| 164 | H0102022FOD1109013.mpg,2023-09-19 11:21:30 | |
| 165 | H0102022FOD1206008.mpg,2023-11-14 17:07:44 | |
| 166 | H0102022FOD1212004.mpg,2023-09-25 17:47:41 | |
| 167 | H0102022FOD1212007.mpg,2023-10-24 13:06:43 | |
| 168 | H0102022FOD1228018.mpg,2023-09-19 16:16:59}}} | |
| 169 | 아래 내용은 Bitrate가 4~6Mbps 사이인 컨텐츠 리스트 결과이다. | |
| 170 | {{{## SD.txt ## | |
| r15 | 171 | HCAAKHD200921.mpg,1600649855,5905200 |
| r14 | 172 | HCAARHD200921.mpg,1600667966,5905200 |
| 173 | HCAAWHD200923.mpg,1600824404,5905200 | |
| 174 | HCAAXHD200923.mpg,1600824580,5905200 | |
| 175 | HCABMHD200925.mpg,1601012433,5905200 | |
| 176 | HCADIHD200928.mpg,1601274244,5905200 | |
| 177 | HCAEDHD200929.mpg,1601341620,5905200 | |
| 178 | HCAEEHD200929.mpg,1601342072,5905200}}} | |
| 179 | 아래 내용은 그 외 Bitrate의 컨텐츠 리스트 결과이다. | |
| 180 | {{{## check.txt ## | |
| r15 | 181 | .a.swp,1460369255,0 |
| r14 | 182 | 1sec_110324.mpg,1481183056,3684427 |
| 183 | HCAAKSD200921.mpg,1600649698,3757500 | |
| 184 | HCAARSD200921.mpg,1600667884,3757500 | |
| 185 | HCAAWSD200923.mpg,1600824217,3757500 | |
| 186 | HCAAXSD200923.mpg,1600824091,3757500 | |
| 187 | HCABMSD200925.mpg,1601012525,3757500 | |
| 188 | HCADISD200928.mpg,1601274635,3757500 | |
| 189 | HCAEDSD200929.mpg,1601341711,3757500 | |
| 190 | HCAEESD200929.mpg,1601341883,3757500}}} | |
| 191 | ||
| 192 | == 제 5과제 == | |
| 193 | 입력한 용량 값 만큼의 컨텐츠 크기인 파일만 출력하는 과제이다. | |
| r4 | 194 | [br] |
| r1 (새 문서) | 195 | > grep "^H" hitcount.txt |
| r9 | 196 | H로 시작하는 컨텐츠 파일만 조회 하기 위해 grep에 ^를 추가해 준다. |
| r7 | 197 | [br] |
| 198 | > current_gb = $4/1024/1024/1024; | |
| r9 | 199 | 리스트 파일에 있는 컨텐츠 별 용량을 구해 GB로 변환 해준다. |
| r4 | 200 | |
| r1 (새 문서) | 201 | {{{if (current_gb < limit) { |
| 202 | printf "%s, %s, %s, %.2f GB, %s\n", $1, v$2, $3, current_gb, $5 | |
| r9 | 203 | } }}}if문을 통해 입력한 GB 값과 파일리스트의 GB변환값을 비교해 미만인 파일들을 출력해준다. |
| r11 | 204 | |
| r9 | 205 | ---- |
| r1 (새 문서) | 206 | 사용 명령어 및 함수 : read, sprintf, grep, awk |
| r11 | 207 | |
| r13 | 208 | ===# 제 5과제 출력 결과 #=== |
| r11 | 209 | 아래 내용은 GB 값을 입력 받아 1GB미만 컨텐츠 리스트를 출력한 결과이다. |
| r14 | 210 | {{{[root@testServer work5]# ./event_show.sh |
| r15 | 211 | Input SIZE(GB) : 1 |
| r14 | 212 | H0102022FOD0126015.mpg, 1695292760, 6017250, 0.83 GB, 192.168.41.102 192.168.41.110 |
| 213 | H0102022FOD0801017.mpg, 1697776852, 6017250, 0.83 GB, 192.168.41.181 192.168.41.182 | |
| 214 | H0102022FOD0818015.mpg, 1703666750, 6017250, 0.83 GB, 192.168.41.181 192.168.41.182 | |
| 215 | H0102022FOD1109013.mpg, 1695090090, 6017250, 0.04 GB, 192.168.41.102 192.168.41.183 | |
| 216 | H0102022FOD1206008.mpg, 1699949264, 6017250, 0.83 GB, 192.168.41.118 192.168.41.183 | |
| 217 | H0102022FOD1212004.mpg, 1695631661, 6017250, 0.83 GB, 192.168.41.114 192.168.41.183... | |
| 218 | }}} | |
| 219 | 아래 내용은 GB 값을 입력 받아 0.5GB미만 컨텐츠 리스트를 출력한 결과이다. | |
| 220 | {{{[root@testServer work5]# ./event_show.sh | |
| r15 | 221 | Input SIZE(GB) : 0.5 |
| r14 | 222 | H0102022FOD1109013.mpg, 1695090090, 6017250, 0.04 GB, 192.168.41.102 192.168.41.183 |
| 223 | H0102023FOD0321010.mpg, 1690260213, 6017250, 0.42 GB, 192.168.41.181 192.168.41.182 | |
| 224 | H0102023FOD0403005.mpg, 1708304121, 6017250, 0.42 GB, 192.168.41.117 192.168.41.118 | |
| 225 | H0102023FOD0531006.mpg, 1714728859, 6017250, 0.42 GB, 192.168.41.181 192.168.41.182 | |
| 226 | H0102023FOD0614002.mpg, 1714729449, 6017250, 0.42 GB, 192.168.41.181 192.168.41.182 | |
| 227 | H0102024FOD0523010.mpg, 1716451462, 6017250, 0.42 GB, 192.168.41.118 192.168.41.182...}}} | |
| 228 | ||
| 229 | == 제 6과제 == | |
| 230 | 파일이 복사된 서버의 IP 리스트의 개수와 파일이 복사된 개수를 비교해 두 값이 다른걸 출력하는 과제이다. | |
| r8 | 231 | [br] |
| r1 (새 문서) | 232 | > split($5, ips, " "); |
| r9 | 233 | > ip_cnt = length(ips); |
| r2 | 234 | > copy_cnt = $6; |
| 235 | split 함수를 이용해 IP 리스트 개수를 출력, | |
| r4 | 236 | 복사된 개수는 이미 Count되어 있어 값을 가져 올 수 있다. |
| 237 | [br] | |
| 238 | {{{if (ip_cnt != copy_cnt) { | |
| r9 | 239 | printf "불일치: %s (실제:%d, 기록:%d)\n", $1, ip_cnt, copy_cnt |
| 240 | } }}}if문을 통해 불일치 값을 출력해 남겨준다. | |
| r2 | 241 | |
| r9 | 242 | ---- |
| r2 | 243 | 사용 명령어 및 함수 : split, if, printf |
| r11 | 244 | |
| 245 | ===# 제 6과제 출력 결과 #=== | |
| 246 | 아래 내용은 복사된 서버의 IP 개수와 복사된 개수를 비교해 불일치 한 것을 출력한 결과이다. | |
| r14 | 247 | {{{불일치: H0602024FOD0611015.mpg (실제:2, 기록:3) |
| r15 | 248 | 불일치: M4330604.mpg (실제:2, 기록:3) |
| r14 | 249 | 불일치: M4622038.mpg (실제:2, 기록:3) |
| 250 | 불일치: M4726665.mpg (실제:2, 기록:3) | |
| 251 | 불일치: M4726666.mpg (실제:2, 기록:3) | |
| 252 | 불일치: M5224716.mpg (실제:3, 기록:4) | |
| 253 | 불일치: M5263260.mpg (실제:3, 기록:4) | |
| 254 | 불일치: M5293015.mpg (실제:3, 기록:4) | |
| 255 | 불일치: M5293063.mpg (실제:3, 기록:4) | |
| 256 | 불일치: M5293072.mpg (실제:3, 기록:4) | |
| 257 | 불일치: M5293078.mpg (실제:3, 기록:4) | |
| 258 | 불일치: M5293093.mpg (실제:3, 기록:4) | |
| 259 | 불일치: M5293147.mpg (실제:3, 기록:4)}}} | |
| 260 | ||
| 261 | == 제 7과제 == | |
| 262 | EventLog에서 SeesionID로 조회해 관련로그를 출력 및 관련 컨텐츠 파일을 다른 파일에서도 조회해 출력하는 과제이다. | |
| r2 | 263 | [br] |
| 264 | > grep "$sid" EventLog\[20241118\].log | |
| r9 | 265 | SessionID를 입력받아 관련 로그를 조회한다. |
| r1 (새 문서) | 266 | [br] |
| 267 | > grep "$sid" EventLog\[20241118\].log | grep ".mpg" | sed -E 's/.*[[,/ ]([^,/[ ]+\.mpg).*/\1/' | sort -u | |
| r9 | 268 | mpg 파일을 다른 파일에서도 조회 하기 위해 mpg 목록들을 출력한다. |
| r4 | 269 | |
| 270 | ---- | |
| 271 | 사용 명령어 및 함수 : read, grep, if, sed, sort, while | |
| r11 | 272 | |
| r13 | 273 | ===# 제 7과제 출력 결과 #=== |
| r11 | 274 | 아래 내용은 입력받은 sessionID를 조회해 관련로그 및 mpg 파일 리스트를 출력한 결과이다. |
| r14 | 275 | {{{[root@testServer work7]# ./event_show.sh |
| r15 | 276 | 조회할 sessionID : e0072144-8c91-4e15-bfb6-2c2b746008bc |
| r14 | 277 | 0x8ffff,1,1731855612,90,Received Request OnDemandSession (SessionID [e0072144-8c91-4e15-bfb6-2c2b746008bc/99206], StreamID [0786e652-e341-4167-af1f-b8f863a6661b], dest IP [172.16.2.143], dest port [263], peerip [192.168.43.19], file [/data2/M4991043.mpg]) |
| 278 | 0x2ffff,1,1731855612,90,RTSP::Reserved Session(e0072144-8c91-4e15-bfb6-2c2b746008bc) Stream(0786e652-e341-4167-af1f-b8f863a6661b) : file(M4991043.mpg), request file(M4991043.mpg) | |
| 279 | 0x40ffff,1,1731855612,event_type[AdverTisement], session(e0072144-8c91-4e15-bfb6-2c2b746008bc) : Get Advertise. - Type(ADM), Advertise(1sec_111227.mpg[-1*1*Tracking=00000000-0000-0000-0000-000000000000],HCDSUHD241018.mpg[-1*1*Tracking=2c8ae4c09ca240f780ec7ec2a49fa226],HCDTZHD241113.mpg[-1*1*Tracking=0f4c8e29bde6404cb6b816e9a956293e]) | |
| 280 | 0x40ffff,4,1731855612,event_type[AdverTisement], session(e0072144-8c91-4e15-bfb6-2c2b746008bc) : Disabled ADV schedule parsing for resume. | |
| 281 | 0x10001,1,1731855612,90,99206,10.183.5.100,M4991043.mpg,2,1731855612,1731855612,SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b] | |
| 282 | 0x4ffff,1,1731855612,90,99206,10.183.5.100,M4991043.mpg,Report Connection Established, SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b] | |
| 283 | 0x4ffff,1,1731855612,90,99206,10.183.5.100,M4991043.mpg,SET_PARAMETER request for smart_card_id -> 17605388 SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b] | |
| 284 | 0x4ffff,1,1731855612,90,99206,10.183.5.100,M4991043.mpg,SET_PARAMETER request for pincode -> UMP, UMP_1.0.0QR2 SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b] | |
| 285 | 0x4ffff,1,1731855612,90,99206,10.183.5.100,M4991043.mpg,SET_PARAMETER request for menuid -> 6807005 SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b] | |
| 286 | 0x4ffff,1,1731855612,90,99206,10.183.5.100,M4991043.mpg,Advertise File(/data1/1sec_111227.mpg) Start, SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc]. StreamID[0786e652-e341-4167-af1f-b8f863a6661b] | |
| 287 | 0x10100,1,1731855612,90,99206,10.183.5.100,M4991043.mpg,2,1731855612,1731855612,SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b] seek offset : 1692 | |
| 288 | 0x10200,1,1731855614,90,99206,10.183.5.100,M4991043.mpg,2,1731855612,1731855614,event_type[AdverTisement], SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b], bandwidth[6073800], clientid[17605388], userid[], bitrate[6073800], systemtype[131072], videotype[1024], audiotype[4], filesize[1898236], filepath[/data1], filename[1sec_111227.mpg], filepath_attr[0], offset[1898236], result_type[1], params[menuid: 6807005], scheduletime[-1], mainfile[M4991043.mpg], adv_info[Tracking=00000000-0000-0000-0000-000000000000], vod_request_meta_info[], startoffset[1692], resetup[0], vod_request_id[cc57bb62-ad8f-4057-bba0-146ba302ea29], vod_ip[192.168.41.151] | |
| 289 | 0x4ffff,1,1731855614,90,99206,10.183.5.100,M4991043.mpg,Advertise File(/data1/HCDSUHD241018.mpg) Start SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b] | |
| 290 | 0x10200,1,1731855631,90,99206,10.183.5.100,M4991043.mpg,2,1731855614,1731855631,event_type[AdverTisement], SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b], bandwidth[5905200], clientid[17605388], userid[], bitrate[5905200], systemtype[131072], videotype[1024], audiotype[4], filesize[12154952], filepath[/data1], filename[HCDSUHD241018.mpg], filepath_attr[0], offset[12154952], result_type[1], params[menuid: 6807005], scheduletime[-1], mainfile[M4991043.mpg], adv_info[Tracking=2c8ae4c09ca240f780ec7ec2a49fa226], vod_request_meta_info[], startoffset[1692], resetup[0], vod_request_id[cc57bb62-ad8f-4057-bba0-146ba302ea29], vod_ip[192.168.41.151] | |
| 291 | 0x4ffff,1,1731855631,90,99206,10.183.5.100,M4991043.mpg,Advertise File(/data1/HCDTZHD241113.mpg) Start SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b] | |
| 292 | 0x10200,1,1731855647,90,99206,10.183.5.100,M4991043.mpg,2,1731855631,1731855647,event_type[AdverTisement], SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b], bandwidth[5905200], clientid[17605388], userid[], bitrate[5905200], systemtype[131072], videotype[1024], audiotype[4], filesize[12154952], filepath[/data1], filename[HCDTZHD241113.mpg], filepath_attr[0], offset[12154952], result_type[1], params[menuid: 6807005], scheduletime[-1], mainfile[M4991043.mpg], adv_info[Tracking=0f4c8e29bde6404cb6b816e9a956293e], vod_request_meta_info[], startoffset[1692], resetup[0], vod_request_id[cc57bb62-ad8f-4057-bba0-146ba302ea29], vod_ip[192.168.41.151] | |
| 293 | 0x10004,1,1731855674,90,99206,10.183.5.100,M4991043.mpg,2,1731855612,1731855674,SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b], Scale 2 | |
| 294 | 0x10004,1,1731855676,90,99206,10.183.5.100,M4991043.mpg,2,1731855612,1731855676,SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b], Scale 4 | |
| 295 | 0x10004,1,1731855677,90,99206,10.183.5.100,M4991043.mpg,2,1731855612,1731855677,SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b], Scale 8 | |
| 296 | 0x10080,1,1731855718,90,99206,10.183.5.100,M4991043.mpg,2,1731855612,1731855718,SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b] | |
| 297 | 0x10002,1,1731855719,90,99206,10.183.5.100,M4991043.mpg,2,1731855612,1731855719,SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b] | |
| 298 | 0x10200,1,1731855719,90,99206,10.183.5.100,M4991043.mpg,2,1731855612,1731855719,SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b], bandwidth[6073800], clientid[17605388], userid[], bitrate[6073800], systemtype[131072], videotype[1024], audiotype[4], filesize[3219443036], filepath[/data2], filename[M4991043.mpg], filepath_attr[0], offset[240276220], result_type[1], params[menuid: 6807005], insert_sent[26208140], bytes_sent[79849992], vod_request_meta_info[], startoffset[1692], resetup[0], vod_request_id[cc57bb62-ad8f-4057-bba0-146ba302ea29], vod_ip[192.168.41.151] | |
| 299 | ||
| 300 | ===== file select ===== | |
| 301 | 1sec_111227.mpg | |
| 302 | file(M4991043.mpg | |
| 303 | HCDSUHD241018.mpg | |
| 304 | HCDTZHD241113.mpg | |
| 305 | M4991043.mpg | |
| 306 | ||
| 307 | ===== select hitcount ===== | |
| 308 | 1sec_111227.mpg,1591335539,6073800,1898236,192.168.41.101 192.168.41.102 192.168.41.103 192.168.41.108 192.168.41.109 192.168.41.110 192.168.41.111 192.168.41.112 192.168.41.113 192.168.41.114 192.168.41.116 192.168.41.117 192.168.41.118 192.168.41.181 192.168.41.182 192.168.41.183,16,0,0,0=0 0 | |
| 309 | HCDSUHD241018.mpg,1729235522,5905200,12154952,192.168.41.101 192.168.41.102 192.168.41.103 192.168.41.108 192.168.41.109 192.168.41.110 192.168.41.111 192.168.41.112 192.168.41.113 192.168.41.114 192.168.41.116 192.168.41.117 192.168.41.118 192.168.41.181 192.168.41.182 192.168.41.183,16,0,0,0=0 0 | |
| 310 | HCDTZHD241113.mpg,1731485917,5905200,12154952,192.168.41.101 192.168.41.102 192.168.41.103 192.168.41.108 192.168.41.109 192.168.41.110 192.168.41.111 192.168.41.112 192.168.41.113 192.168.41.114 192.168.41.116 192.168.41.117 192.168.41.118 192.168.41.181 192.168.41.182 192.168.41.183,16,0,0,0=0 0}}} | |
| 311 | ||
| 312 | ||
| 313 | == 제 8과제 == | |
| r18 | 314 | 입력한 시간을 Unix Time 변환해 EventLog 파일에서 입력한 시간에 찍힌 로그를 출력한 과제이다. |
| r1 (새 문서) | 315 | [br] |
| 316 | > start_ts=$(date -d "$LOG_DATE $start_input" +%s) | |
| r18 | 317 | > Ex) input = 10:30 |
| r1 (새 문서) | 318 | > 변환 중 --> 20241118 103000 |
| 319 | > 변환 후 --> 1731893401 | |
| r9 | 320 | 입력받은 시간을 unix time으로 변환해준다. |
| r1 (새 문서) | 321 | [br] |
| 322 | > awk -F',' -v s="$start_ts" -v e="$end_ts" '$3 >= s && $3 <= e' "$FILE" | |
| r17 | 323 | 입력한 시작 시간보다 큰 값과 입력한 종료 시간보다 작거나 같은 값을 출력한다. |
| 324 | ---- | |
| r18 | 325 | 사용 명령어 및 함수 : read, awk, date, sed |
| r17 | 326 | |
| r2 | 327 | ===# 제 8과제 출력 결과 #=== |
| 328 | 아래 내용은 시간을 입력받아 해당 범위 내 로그를 출력한 결과이다. | |
| r9 | 329 | {{{[root@testServer work8]# ./select_hour.sh |
| r2 | 330 | Start Hour : 11:00 |
| 331 | End Hour : 11:01 | |
| 332 | 0x10004,1,1731895205,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895205,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02], Scale 2 | |
| r11 | 333 | 0x10004,1,1731895206,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895206,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02], Scale 4 |
| 334 | 0x10004,1,1731895206,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895206,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02], Scale 8 | |
| r2 | 335 | 0x10004,1,1731895207,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895207,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02], Scale 16 |
| r14 | 336 | 0x10040,1,1731895217,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895217,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02] |
| r15 | 337 | 0x10080,1,1731895221,90,99462,10.158.154.220,M4994600.mpg,2,1731893212,1731895221,SessionID[272b2c9d-2288-4cf4-bb07-2ee31800341c], StreamID[1b803e81-52a9-4a1e-bd9a-0580452904c0] |
| r14 | 338 | 0x10002,1,1731895221,90,99462,10.158.154.220,M4994600.mpg,2,1731893212,1731895221,SessionID[272b2c9d-2288-4cf4-bb07-2ee31800341c], StreamID[1b803e81-52a9-4a1e-bd9a-0580452904c0] |
| 339 | 0x10200,1,1731895221,90,99462,10.158.154.220,M4994600.mpg,2,1731893212,1731895221,SessionID[272b2c9d-2288-4cf4-bb07-2ee31800341c], StreamID[1b803e81-52a9-4a1e-bd9a-0580452904c0], bandwidth[6073800], clientid[], userid[], bitrate[6073800], systemtype[131072], videotype[1024], audiotype[4], filesize[3836009716], filepath[/data1], filename[M4994600.mpg], filepath_attr[0], offset[3461847792], result_type[1], params[], insert_sent[25125448], bytes_sent[1524970460], vod_request_meta_info[], startoffset[1692], resetup[0], vod_request_id[98392774-61ad-4435-8cb2-03641516314c], vod_ip[192.168.41.151] | |
| 340 | 0x8ffff,1,1731895221,90,SendRequestStreamStateNotification count : 1 | |
| 341 | 0x10004,1,1731895224,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895224,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02], Scale 2 | |
| 342 | 0x10004,1,1731895224,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895224,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02], Scale 4 | |
| 343 | 0x10004,1,1731895225,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895225,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02], Scale 8 | |
| 344 | 0x10004,1,1731895225,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895225,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02], Scale 16 | |
| 345 | 0x10040,1,1731895227,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895227,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02] | |
| 346 | 0x8ffff,1,1731895236,90,Received Request OnDemandSession (SessionID [093d0146-5993-43a8-bbb7-5a9ca03b9595/88470], StreamID [85629a14-9705-4dd3-9e92-76ae19979d57], dest IP [172.16.132.139], dest port [270], peerip [192.168.43.19], file [/data1/M4337604.mpg]) | |
| 347 | 0x2ffff,1,1731895236,90,RTSP::Reserved Session(093d0146-5993-43a8-bbb7-5a9ca03b9595) Stream(85629a14-9705-4dd3-9e92-76ae19979d57) : file(M4337604.mpg), request file(M4337604.mpg) | |
| 348 | 0x40ffff,1,1731895236,event_type[AdverTisement], session(093d0146-5993-43a8-bbb7-5a9ca03b9595) : Get Advertise. - Type(ADM), Advertise(1sec_111227.mpg[-1*1*Tracking=00000000-0000-0000-0000-000000000000],HCDTWHD241107.mpg[-1*1*Tracking=0752fe98edea4202a62038535409fa75]) | |
| 349 | 0x40ffff,4,1731895236,event_type[AdverTisement], session(093d0146-5993-43a8-bbb7-5a9ca03b9595) : Disabled ADV schedule parsing for resume. | |
| 350 | 0x10001,1,1731895236,90,88470,10.155.150.52,M4337604.mpg,2,1731895236,1731895236,SessionID[093d0146-5993-43a8-bbb7-5a9ca03b9595], StreamID[85629a14-9705-4dd3-9e92-76ae19979d57] | |
| 351 | 0x8ffff,1,1731895236,90,SendRequestStreamStateNotification count : 1 | |
| 352 | 0x4ffff,1,1731895236,90,88470,10.155.150.52,M4337604.mpg,Report Connection Established, SessionID[093d0146-5993-43a8-bbb7-5a9ca03b9595], StreamID[85629a14-9705-4dd3-9e92-76ae19979d57] | |
| 353 | 0x4ffff,1,1731895236,90,88470,10.155.150.52,M4337604.mpg,Advertise File(/data1/1sec_111227.mpg) Start, SessionID[093d0146-5993-43a8-bbb7-5a9ca03b9595]. StreamID[85629a14-9705-4dd3-9e92-76ae19979d57] | |
| 354 | 0x10100,1,1731895236,90,88470,10.155.150.52,M4337604.mpg,2,1731895236,1731895236,SessionID[093d0146-5993-43a8-bbb7-5a9ca03b9595], StreamID[85629a14-9705-4dd3-9e92-76ae19979d57] seek offset : 4136 | |
| 355 | 0x8ffff,1,1731895236,90,Received Request OnDemandSession (SessionID [b70923f0-6103-4c56-8d84-4e365348b86f/105693], StreamID [05f78147-affe-44bb-912b-52dcd3b7e92a], dest IP [172.16.98.130], dest port [264], peerip [192.168.43.19], file [/data1/M5260132.mpg]) | |
| 356 | 0x2ffff,1,1731895236,90,RTSP::Reserved Session(b70923f0-6103-4c56-8d84-4e365348b86f) Stream(05f78147-affe-44bb-912b-52dcd3b7e92a) : file(M5260132.mpg), request file(M5260132.mpg) | |
| 357 | 0x40ffff,1,1731895236,event_type[AdverTisement], session(b70923f0-6103-4c56-8d84-4e365348b86f) : Get Advertise. - Type(ADM), Advertise(1sec_111227.mpg[-1*1*Tracking=00000000-0000-0000-0000-000000000000],HCDTXHD241108.mpg[-1*1*Tracking=c746af766af2435d9f169357b75befcb],HCDSUHD241018.mpg[-1*1*Tracking=5d90d1dbd138454e9784a68fe9411456],HCDUAHD241113.mpg[-1*1*Tracking=71c49e0325354c3c99d6bdd85833c5f4],HCDTZHD241113.mpg[-1*1*Tracking=713d45b85e4249c79a32eb28e1da454b]) | |
| 358 | 0x40ffff,4,1731895236,event_type[AdverTisement], session(b70923f0-6103-4c56-8d84-4e365348b86f) : Disabled ADV schedule parsing for resume. | |
| 359 | 0x10001,1,1731895236,90,105693,10.148.69.219,M5260132.mpg,2,1731895236,1731895236,SessionID[b70923f0-6103-4c56-8d84-4e365348b86f], StreamID[05f78147-affe-44bb-912b-52dcd3b7e92a] | |
| 360 | 0x4ffff,1,1731895237,90,105693,10.148.69.219,M5260132.mpg,Report Connection Established, SessionID[b70923f0-6103-4c56-8d84-4e365348b86f], StreamID[05f78147-affe-44bb-912b-52dcd3b7e92a] | |
| 361 | 0x4ffff,1,1731895237,90,105693,10.148.69.219,M5260132.mpg,SET_PARAMETER request for smart_card_id -> 17709151 SessionID[b70923f0-6103-4c56-8d84-4e365348b86f], StreamID[05f78147-affe-44bb-912b-52dcd3b7e92a] | |
| 362 | 0x4ffff,1,1731895237,90,105693,10.148.69.219,M5260132.mpg,SET_PARAMETER request for pincode -> UMP, UMP_1.0.0QR2 SessionID[b70923f0-6103-4c56-8d84-4e365348b86f], StreamID[05f78147-affe-44bb-912b-52dcd3b7e92a] | |
| 363 | 0x4ffff,1,1731895237,90,105693,10.148.69.219,M5260132.mpg,SET_PARAMETER request for menuid -> 9955176 SessionID[b70923f0-6103-4c56-8d84-4e365348b86f], StreamID[05f78147-affe-44bb-912b-52dcd3b7e92a] | |
| 364 | 0x4ffff,1,1731895237,90,105693,10.148.69.219,M5260132.mpg,Advertise File(/data1/1sec_111227.mpg) Start, SessionID[b70923f0-6103-4c56-8d84-4e365348b86f]. StreamID[05f78147-affe-44bb-912b-52dcd3b7e92a] | |
| 365 | 0x10100,1,1731895237,90,105693,10.148.69.219,M5260132.mpg,2,1731895236,1731895237,SessionID[b70923f0-6103-4c56-8d84-4e365348b86f], StreamID[05f78147-affe-44bb-912b-52dcd3b7e92a] seek offset : 1692 | |
| 366 | 0x10200,1,1731895237,90,88470,10.155.150.52,M4337604.mpg,2,1731895236,1731895237,event_type[AdverTisement], SessionID[093d0146-5993-43a8-bbb7-5a9ca03b9595], StreamID[85629a14-9705-4dd3-9e92-76ae19979d57], bandwidth[6073800], clientid[], userid[], bitrate[6073800], systemtype[131072], videotype[1024], audiotype[4], filesize[1898236], filepath[/data1], filename[1sec_111227.mpg], filepath_attr[0], offset[1898236], result_type[1], params[], scheduletime[-1], mainfile[M4337604.mpg], adv_info[Tracking=00000000-0000-0000-0000-000000000000], vod_request_meta_info[], startoffset[4136], resetup[0], vod_request_id[ddc5b69e-fa0c-4f63-8ba7-67f6daa5424a], vod_ip[192.168.41.151] | |
| 367 | 0x4ffff,1,1731895237,90,88470,10.155.150.52,M4337604.mpg,Advertise File(/data1/HCDTWHD241107.mpg) Start SessionID[093d0146-5993-43a8-bbb7-5a9ca03b9595], StreamID[85629a14-9705-4dd3-9e92-76ae19979d57] | |
| 368 | 0x10200,1,1731895238,90,105693,10.148.69.219,M5260132.mpg,2,1731895237,1731895238,event_type[AdverTisement], SessionID[b70923f0-6103-4c56-8d84-4e365348b86f], StreamID[05f78147-affe-44bb-912b-52dcd3b7e92a], bandwidth[6073800], clientid[17709151], userid[], bitrate[6073800], systemtype[131072], videotype[1024], audiotype[4], filesize[1898236], filepath[/data1], filename[1sec_111227.mpg], filepath_attr[0], offset[1898236], result_type[1], params[menuid: 9955176], scheduletime[-1], mainfile[M5260132.mpg], adv_info[Tracking=00000000-0000-0000-0000-000000000000], vod_request_meta_info[], startoffset[1692], resetup[0], vod_request_id[2e7f5918-a7ed-4b7b-9e2c-0815239c68ce], vod_ip[192.168.41.151] | |
| 369 | 0x4ffff,1,1731895238,90,105693,10.148.69.219,M5260132.mpg,Advertise File(/data1/HCDTXHD241108.mpg) Start SessionID[b70923f0-6103-4c56-8d84-4e365348b86f], StreamID[05f78147-affe-44bb-912b-52dcd3b7e92a] | |
| 370 | 0x8ffff,1,1731895241,90,SendRequestStreamStateNotification count : 1 | |
| 371 | 0x10004,1,1731895259,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895259,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02], Scale 2 | |
| 372 | 0x10004,1,1731895259,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895259,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02], Scale 4 | |
| 373 | 0x10004,1,1731895260,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895260,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02], Scale 8 | |
| 374 | 0x10004,1,1731895260,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895260,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02], Scale 16}}} | |
| 375 | ||
| 376 |